20. 列表推导式(选学)

L3 14 列表推导式 V4

列表推导式

在 Python 中,你可以使用列表推导式快速简练地创建列表。下面是之前的一个示例:

capitalized_cities = []
for city in cities:
    capitalized_cities.append(city.title())

可以简写为:

capitalized_cities = [city.title() for city in cities]

借助列表推导式,我们可以使用 for 循环用一步创建一个列表。

我们使用方括号 [] 创建列表推导式,括号里包含要对可迭代对象中的每个元素进行评估的条件。上述列表推导式对 cities 中的每个元素 city 调用 city.title() ,以为新列表 capitalized_cities 创建每个元素。

列表推导式中的条件语句

你还可以向列表推导式添加条件语句。在可迭代对象之后,你可以使用关键字 if 检查每次迭代中的条件。

squares = [x**2 for x in range(9) if x % 2 == 0]

上述代码将 squares 设为等于列表 [0, 4, 16, 36, 64],因为仅在 x 为偶数时才评估 x 的 2 次幂。如果你想添加 else ,将遇到语法错误。

squares = [x**2 for x in range(9) if x % 2 == 0 else x + 3]

如果你要添加 else ,则需要将条件语句移到列表推导式的开头,直接放在表达式后面,如下所示。

squares = [x**2 if x % 2 == 0 else x + 3 for x in range(9)]

列表推导式并没有在其他语言中出现,但是在 python 中很常见。